Salt : Basic Usage
2016/10/08 |
This is the basic usage to execute commands from Salt Master to Salt Minion remotely.
⇒ salt [option] [target] [function] [arguments]
For description of all embeded functions, Refer to the official site.
⇒ https://docs.saltstack.com/en/latest/ref/modules/all/index.html
|
|
[1] | It's possible to see functions with the command, too. (many lines are output, so use less or more command to read) |
[root@dlp ~]# salt '*' sys.doc 'acl.delfacl:' Remove specific FACL from the specified file(s) CLI Examples: salt '*' acl.delfacl user myuser /tmp/house/kitchen salt '*' acl.delfacl default:group mygroup /tmp/house/kitchen ..... ..... |
[2] | It's possible to specify targets with various way. |
# specify all Minions # test.ping means that make sure Minions are acitive [root@dlp ~]# salt '*' test.ping node02.srv.world: True node01.srv.world: True # specify a Minion "node01.srv.world" # disk.usage means that make sure current disk usage [root@dlp ~]# salt 'node01.srv.world' disk.usage
node01.srv.world: ---------- /: ---------- 1K-blocks: 27740944 available: 26176776 capacity: 6% filesystem: /dev/mapper/centos-root used: 1564168 ..... ..... # specify some Minions with List(comma separated) # status.loadavg means that make sure load averages [root@dlp ~]# salt -L 'node01.srv.world,node02.srv.world' status.loadavg
node02.srv.world: ---------- 1-min: 0.0 15-min: 0.05 5-min: 0.01 node01.srv.world: ..... ..... # specify Minions with expression (example means "node00-99.srv.world") # selinux.getenforce means that make sure SELinux operating mode [root@dlp ~]# salt -E 'node[0-9][0-9].srv.world' selinux.getenforce
node02.srv.world: Enforcing node01.srv.world: Enforcing # specify Minions which OS is CentOS with Grains Data # grains.item kernelrelease means that make sure Kernel version from grains.item data # Grains is the word used in Salt and which keeps Minions' OS data and others [root@dlp ~]# salt -G 'os:CentOS' grains.item kernelrelease node01.srv.world: ---------- kernelrelease: 3.10.0-327.36.1.el7.x86_64 node02.srv.world: ---------- kernelrelease: 3.10.0-327.36.1.el7.x86_64 # specify multiple conditions with "C" option # the follow specifies Minions which OS is CentOS and hostname is node01-node05 # cmd.run means that it executes commands [root@dlp ~]# salt -C 'G@os:CentOS and E@node0[1-5].srv.world' cmd.run 'uptime' node02.srv.world: 09:46:43 up 18 min, 0 users, load average: 0.00, 0.01, 0.03 node01.srv.world: 09:46:43 up 18 min, 0 users, load average: 0.07, 0.05, 0.03 |
[3] | It's also possible to specify target with Groups. |
[root@dlp ~]#
vi /etc/salt/master # line 12: uncomment default_include: master.d/*.conf mkdir /etc/salt/master.d
[root@dlp ~]#
vi /etc/salt/master.d/nodegroups.conf # create new # group01 : specify List with "L@" (comma separated) # group02 : specify node03-node05 with expression # group03 : specify OS is CentOS nodegroups: group01: 'L@node01.srv.world,node02.srv.world' group02: 'E@node0[3-5].srv.world' group03: 'G@os:CentOS'
[root@dlp ~]#
systemctl restart salt-master
# run to a target group01 # firewalld.list_services means that make sure allowed services by firewalld [root@dlp ~]# salt -N 'group01' firewalld.list_services node01.srv.world: - dhcpv6-client - ssh node02.srv.world: - dhcpv6-client - ssh |